Devirtualization refers to the compiler optimization in object oriented language compilers in which dynamically bound function calls are converted into statically bound direct calls. Performance improvements can be realized in part because the overhead accompanying dynamic dispatch is avoided. Dynamic dispatch refers to the processing that is necessary to convert a call to a virtual function to a call to a derived class that actually implements the virtual function. Performance improvements can also be realized because there can be additional opportunities for inlining of function calls. Inlining refers to replacing a call to a function in source code with the actual code of the called function in the compiled code.